app(nil, YS) → YS
app(cons(X, XS), YS) → cons(X, app(XS, YS))
from(X) → cons(X, from(s(X)))
zWadr(nil, YS) → nil
zWadr(XS, nil) → nil
zWadr(cons(X, XS), cons(Y, YS)) → cons(app(Y, cons(X, nil)), zWadr(XS, YS))
prefix(L) → cons(nil, zWadr(L, prefix(L)))
app: {1, 2}
nil: empty set
cons: {1}
from: {1}
s: {1}
zWadr: {1, 2}
prefix: {1}
↳ CSR
↳ CSDependencyPairsProof
app(nil, YS) → YS
app(cons(X, XS), YS) → cons(X, app(XS, YS))
from(X) → cons(X, from(s(X)))
zWadr(nil, YS) → nil
zWadr(XS, nil) → nil
zWadr(cons(X, XS), cons(Y, YS)) → cons(app(Y, cons(X, nil)), zWadr(XS, YS))
prefix(L) → cons(nil, zWadr(L, prefix(L)))
app: {1, 2}
nil: empty set
cons: {1}
from: {1}
s: {1}
zWadr: {1, 2}
prefix: {1}
Using Improved CS-DPs we result in the following initial Q-CSDP problem.
↳ CSR
↳ CSDependencyPairsProof
↳ QCSDP
↳ QCSDependencyGraphProof
ZWADR(cons(X, XS), cons(Y, YS)) → APP(Y, cons(X, nil))
app(XS, YS)
from(s(X))
zWadr(XS, YS)
zWadr(L, prefix(L))
prefix(L)
app on positions {1, 2}
s on positions {1}
from on positions {1}
zWadr on positions {1, 2}
prefix on positions {1}
U(app(x_0, x_1)) → U(x_0)
U(app(x_0, x_1)) → U(x_1)
U(s(x_0)) → U(x_0)
U(from(x_0)) → U(x_0)
U(zWadr(x_0, x_1)) → U(x_0)
U(zWadr(x_0, x_1)) → U(x_1)
U(prefix(x_0)) → U(x_0)
U(app(XS, YS)) → APP(XS, YS)
U(from(s(X))) → FROM(s(X))
U(zWadr(XS, YS)) → ZWADR(XS, YS)
U(zWadr(L, prefix(L))) → ZWADR(L, prefix(L))
U(prefix(L)) → PREFIX(L)
app(nil, YS) → YS
app(cons(X, XS), YS) → cons(X, app(XS, YS))
from(X) → cons(X, from(s(X)))
zWadr(nil, YS) → nil
zWadr(XS, nil) → nil
zWadr(cons(X, XS), cons(Y, YS)) → cons(app(Y, cons(X, nil)), zWadr(XS, YS))
prefix(L) → cons(nil, zWadr(L, prefix(L)))
↳ CSR
↳ CSDependencyPairsProof
↳ QCSDP
↳ QCSDependencyGraphProof
↳ QCSDP
↳ QCSDPSubtermProof
U(app(x_0, x_1)) → U(x_0)
U(app(x_0, x_1)) → U(x_1)
U(s(x_0)) → U(x_0)
U(from(x_0)) → U(x_0)
U(zWadr(x_0, x_1)) → U(x_0)
U(zWadr(x_0, x_1)) → U(x_1)
U(prefix(x_0)) → U(x_0)
app(nil, YS) → YS
app(cons(X, XS), YS) → cons(X, app(XS, YS))
from(X) → cons(X, from(s(X)))
zWadr(nil, YS) → nil
zWadr(XS, nil) → nil
zWadr(cons(X, XS), cons(Y, YS)) → cons(app(Y, cons(X, nil)), zWadr(XS, YS))
prefix(L) → cons(nil, zWadr(L, prefix(L)))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
U(app(x_0, x_1)) → U(x_0)
U(app(x_0, x_1)) → U(x_1)
U(s(x_0)) → U(x_0)
U(from(x_0)) → U(x_0)
U(zWadr(x_0, x_1)) → U(x_0)
U(zWadr(x_0, x_1)) → U(x_1)
U(prefix(x_0)) → U(x_0)
↳ CSR
↳ CSDependencyPairsProof
↳ QCSDP
↳ QCSDependencyGraphProof
↳ QCSDP
↳ QCSDPSubtermProof
↳ QCSDP
↳ PIsEmptyProof
app(nil, YS) → YS
app(cons(X, XS), YS) → cons(X, app(XS, YS))
from(X) → cons(X, from(s(X)))
zWadr(nil, YS) → nil
zWadr(XS, nil) → nil
zWadr(cons(X, XS), cons(Y, YS)) → cons(app(Y, cons(X, nil)), zWadr(XS, YS))
prefix(L) → cons(nil, zWadr(L, prefix(L)))